Practical উদাহরণ: Enum এর মাধ্যমে Collections Management

EnumSet এবং EnumMap - জাভা ইউটিল.প্যাকেজ (Java.util Package) - Java Technologies

274

enum (Enumeration) একটি বিশেষ ধরনের ক্লাস যা কিছু নির্দিষ্ট কনস্ট্যান্ট মান সংরক্ষণ করে। এটি সাধারণত একধরনের ফিক্সড সেট মানের জন্য ব্যবহৃত হয়, যেমন দিন, মাস, বা অন্যান্য প্রিসেট মান। Enum এর মাধ্যমে আপনি Collections এর ব্যবস্থাপনাও করতে পারেন, যা আরও শক্তিশালী এবং ট্যাবলেট (type-safe) ডেটা ম্যানিপুলেশন সরবরাহ করে।

এখানে আমরা দেখব কিভাবে Enum ক্লাসের মাধ্যমে Collections ম্যানেজমেন্ট করা যায় এবং একটি বাস্তব উদাহরণের মাধ্যমে কাজের ধারণা দেওয়া হবে।


Enum Class এর ধারণা

enum একটি বিশেষ ধরনের ক্লাস যা ডিফল্টভাবে একটি immutable (অপরিবর্তনীয়) কনস্ট্যান্টের সেট তৈরি করে। enum ক্লাসের ভেতরে সাধারণত কোন মেথড থাকে না, তবে আপনি চাইলে মেথডও লিখতে পারেন।

Enum উদাহরণ:

public enum Day {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

এখানে Day হলো একটি enum, যা সপ্তাহের সাত দিনকে প্রতিনিধিত্ব করে।


EnumSet এবং HashSet দিয়ে Collections Management

EnumSet এবং HashSet দুটোই Set ইন্টারফেসের বাস্তবায়ন, তবে তাদের মধ্যে কিছু মূল পার্থক্য রয়েছে:

  • EnumSet: এটি শুধুমাত্র enum কনস্ট্যান্টগুলির জন্য একটি Set। এটি বেশি কার্যকরী এবং memory efficient যখন আপনি enum কনস্ট্যান্টগুলির সঙ্গে কাজ করছেন।
  • HashSet: এটি কোনো ধরনের Object ধারণ করতে পারে এবং এটি একটি hashing ডেটা স্ট্রাকচার ব্যবহার করে।

আমরা দেখব কিভাবে EnumSet এবং HashSet ব্যবহার করে enum কনস্ট্যান্টের সাথে Collections ম্যানেজমেন্ট করা যায়।


Practical Example: EnumSet এবং HashSet দিয়ে Collections Management

ধরা যাক, একটি কোম্পানির মধ্যে Weekdays এবং Weekend এর জন্য আলাদা Set তৈরি করতে হবে এবং EnumSet এবং HashSet দিয়ে তাদের ম্যানেজ করা হবে।

EnumSet Example:

import java.util.EnumSet;

public class EnumSetExample {
    public enum Day {
        MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
    }

    public static void main(String[] args) {
        // EnumSet ব্যবহার করে Weekdays তৈরি করা
        EnumSet<Day> weekdays = EnumSet.of(Day.MONDAY, Day.TUESDAY, Day.WEDNESDAY, Day.THURSDAY, Day.FRIDAY);
        System.out.println("Weekdays: " + weekdays);

        // EnumSet ব্যবহার করে Weekend তৈরি করা
        EnumSet<Day> weekend = EnumSet.of(Day.SATURDAY, Day.SUNDAY);
        System.out.println("Weekend: " + weekend);
        
        // EnumSet এর মধ্যে চেক করা
        System.out.println("Is Monday a weekday? " + weekdays.contains(Day.MONDAY));
        System.out.println("Is Sunday a weekend? " + weekend.contains(Day.SUNDAY));
    }
}

Output:

Weekdays: [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY]
Weekend: [SATURDAY, SUNDAY]
Is Monday a weekday? true
Is Sunday a weekend? true

ব্যাখ্যা:

  • EnumSet ব্যবহার করে Weekdays এবং Weekend নামক দুটি সেট তৈরি করা হয়েছে।
  • EnumSet.of() মেথডের মাধ্যমে নির্দিষ্ট enum কনস্ট্যান্টগুলিকে সেটে সংরক্ষণ করা হয়েছে।
  • contains() মেথড ব্যবহার করে চেক করা হয়েছে যে, Monday এবং Sunday উল্লিখিত সেটে রয়েছে কিনা।

HashSet Example:

import java.util.HashSet;
import java.util.Set;

public class HashSetExample {
    public enum Day {
        MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
    }

    public static void main(String[] args) {
        // HashSet ব্যবহার করে Weekdays তৈরি করা
        Set<Day> weekdays = new HashSet<>();
        weekdays.add(Day.MONDAY);
        weekdays.add(Day.TUESDAY);
        weekdays.add(Day.WEDNESDAY);
        weekdays.add(Day.THURSDAY);
        weekdays.add(Day.FRIDAY);
        System.out.println("Weekdays (HashSet): " + weekdays);

        // HashSet ব্যবহার করে Weekend তৈরি করা
        Set<Day> weekend = new HashSet<>();
        weekend.add(Day.SATURDAY);
        weekend.add(Day.SUNDAY);
        System.out.println("Weekend (HashSet): " + weekend);

        // HashSet এর মধ্যে চেক করা
        System.out.println("Is Friday a weekday? " + weekdays.contains(Day.FRIDAY));
        System.out.println("Is Saturday a weekend? " + weekend.contains(Day.SATURDAY));
    }
}

Output:

Weekdays (HashSet): [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY]
Weekend (HashSet): [SATURDAY, SUNDAY]
Is Friday a weekday? true
Is Saturday a weekend? true

ব্যাখ্যা:

  • HashSet ব্যবহার করে Weekdays এবং Weekend নামে দুটি সেট তৈরি করা হয়েছে। এখানে add() মেথডের মাধ্যমে enum কনস্ট্যান্ট গুলি HashSet এ যুক্ত করা হয়েছে।
  • contains() মেথড ব্যবহার করে চেক করা হয়েছে যে, Friday এবং Saturday উল্লিখিত সেটে রয়েছে কিনা।

EnumSet এবং HashSet এর মধ্যে পার্থক্য:

FeatureEnumSetHashSet
Support for Dataশুধুমাত্র enum কনস্ট্যান্ট ধারণ করেযেকোনো ধরনের Object ধারণ করতে পারে
Memory Efficiencyকম মেমরি খরচবেশি মেমরি খরচ
PerformanceEnumSet অধিক কার্যকরী, বিশেষত enum কনস্ট্যান্টের জন্যHashSet ডেটার জন্য সাধারণ কিন্তু কম কার্যকরী
Orderingঅর্ডার বজায় রাখে না (তবে EnumSet এর মধ্যে অর্ডার থাকতে পারে)এলিমেন্ট গুলি অর্ডার বজায় রাখে না
Null ElementsNull উপাদান সমর্থন করে নাNull উপাদান সমর্থন করে

EnumSet এবং HashSet এর Use Cases:

  • EnumSet: যখন আপনার প্রয়োজন enum কনস্ট্যান্টের জন্য দ্রুত set operations (যেমন, সেটে উপস্থিত কিনা, সেট যোগ করা) এবং memory efficiency
  • HashSet: যখন আপনি সাধারণ objects বা non-primitive types (যেমন, Strings, Integers, User-defined Objects) সংগ্রহ করতে চান।

  • EnumSet এবং HashSet এর মধ্যে প্রধান পার্থক্য হল EnumSet শুধুমাত্র enum কনস্ট্যান্টের জন্য এবং বেশি memory efficient, যেখানে HashSet যে কোনো ধরনের object ধারণ করতে পারে এবং এটি সাধারণত বেশি memory খরচ করে।
  • EnumSet বেশি কার্যকরী এবং performance এবং memory efficiency এর জন্য উন্নত, বিশেষ করে যখন enum কনস্ট্যান্টের সঙ্গে কাজ করা হয়।
  • HashSet সাধারণ object ধারণের জন্য ব্যবহার করা হয়, তবে এটি EnumSet এর মতো অর্ডার বা পারফরম্যান্সের দিক থেকে দক্ষ নয়।

EnumSet এবং HashSet দুটোই Set ইন্টারফেসের বাস্তবায়ন, এবং আপনি enum কনস্ট্যান্ট ব্যবহার করে EnumSet এবং সাধারণ objects এর জন্য HashSet নির্বাচন করতে পারেন, যা আপনার প্রয়োজন অনুযায়ী উপযুক্ত।

Content added By
Promotion

Are you sure to start over?

Loading...